Computers and networks of computers provide services in a growing number of fields, including office applications such as text processing and spread sheet applications, e-mail applications, virtual shopping services, home banking applications, personal service applications, and applications in connection with an operating system.
These applications generally provide services to a user operating a data processing device, and to do so, these applications may be either executed at the user's data processing device or executed at a remote data processing device or server, for example, under control of the user operating a client data processing device.
A data processing device typically includes a central data processing unit for executing coded instructions of an application program. Further, a data processing device typically includes a random access memory (RAM) for short-term storage and a long term memory such as a hard disk or a compact disc. During execution of coded instructions of an application program, the central data processing unit typically allocates storage space in the long term memory or temporary storage space in the RAM, for example, for intermediately storing items, such as, data blocks or partitions of the application program and data to be operated on by the application program.
An application program may comprise a single program executed on a single data processing device, where the data processing device executes coded instructions of the application program. As application programs increase in complexity, however, it may be advantageous to divide the application programs into a plurality of application modules, where the application modules cooperate to provide a service to a user. For example, an application program relating to an office application, such as text processing, could include a plurality of application modules covering the functions of retrieving a document, displaying a document, and receiving and processing editing commands.
If the application program comprises a plurality of application modules, each of the application modules may be authorized to allocate data blocks in memory in the process of providing a service to the user.
Since applications and application modules may execute similar functions and access similar data to be operated on, different applications and application modules allocate space in commonly accessible memories, such as in a hard disc or RAM, for the same data or data blocks. The data or data blocks include, for example, data to be operated on or computational results.
Further, particularly in computer networks, a large number of users may access the computational resources of a server, for example, through client data processing units connected to the server via a communication link. A situation may occur wherein a plurality of users launch the same application program for execution at the server unit. In this case, the server unit will execute similar processes for each of the plurality of users and also allocate memory space, for example in a RAM or on storage means such as a hard disk or a writeable compact disc, for identical data or data blocks.
Consequently, in the above case, the server may allocate memory space a plurality of times for the same data block.
In a typical approach to address this problem, if the data blocks for example are constituted by data files having names, then multiple storage of data files having the same name, e.g., on a hard disk of a server computer, is avoided by determining which data files have the same name and by eliminating all but one data file having the same name.
This approach is insufficient, however, because only entire data files may be treated, the names of the data files may not be unique, and full knowledge of all allocated data blocks may not be available.
Based on the above-described problems of data processing systems, it is therefore desirable to improve them.